home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / mcr2.c < prev    next >
C/C++ Source or Header  |  2000-04-08  |  31KB  |  903 lines

  1. /***************************************************************************
  2.  
  3.     Midway MCR-2 system
  4.  
  5.     driver by Christopher Kirmse, Aaron Giles
  6.  
  7.     Currently implemented:
  8.         * Satan's Hollow
  9.         * Tron
  10.         * Kozmik Krooz'r
  11.         * Domino Man
  12.         * Wacko
  13.         * Two Tigers
  14.         * Journey
  15.  
  16. ****************************************************************************
  17.  
  18.     Memory map
  19.  
  20. ****************************************************************************
  21.  
  22.     ========================================================================
  23.     CPU #1
  24.     ========================================================================
  25.     0000-BFFF   R     xxxxxxxx    Program ROM
  26.     C000-C7FF   R/W   xxxxxxxx    NVRAM
  27.     F000-F1FF   R/W   xxxxxxxx    Sprite RAM
  28.     F800-FF7F   R/W   xxxxxxxx    Background video RAM
  29.     FF80-FFFF     W   xxxxxxxx    Palette RAM
  30.     ========================================================================
  31.     0000        R     x-xxxxxx    Input ports
  32.                 R     x-------    Service switch (active low)
  33.                 R     --x-----    Tilt
  34.                 R     ---xxx--    External inputs
  35.                 R     ------x-    Right coin
  36.                 R     -------x    Left coin
  37.     0000        W     xxxxxxxx    Data latch OP0 (coin meters, 2 led's and cocktail 'flip')
  38.     0001        R     xxxxxxxx    External inputs
  39.     0002        R     xxxxxxxx    External inputs
  40.     0003        R     xxxxxxxx    DIP switches
  41.     0004        R     xxxxxxxx    External inputs
  42.     0004        W     xxxxxxxx    Data latch OP4 (comm. with external hardware)
  43.     0007        R     xxxxxxxx    Audio status
  44.     001C-001F   W     xxxxxxxx    Audio latches 1-4
  45.     00E0        W     --------    Watchdog reset
  46.     00E8        W     xxxxxxxx    Unknown (written at initialization time)
  47.     00F0-00F3   W     xxxxxxxx    CTC communications
  48.     ========================================================================
  49.     Interrupts:
  50.         NMI ???
  51.         INT generated by CTC
  52.     ========================================================================
  53.  
  54.  
  55.     ========================================================================
  56.     CPU #2 (Super Sound I/O)
  57.     ========================================================================
  58.     0000-3FFF   R     xxxxxxxx    Program ROM
  59.     8000-83FF   R/W   xxxxxxxx    Program RAM
  60.     9000-9003   R     xxxxxxxx    Audio latches 1-4
  61.     A000          W   xxxxxxxx    AY-8910 #1 control
  62.     A001        R     xxxxxxxx    AY-8910 #1 status
  63.     A002          W   xxxxxxxx    AY-8910 #1 data
  64.     B000          W   xxxxxxxx    AY-8910 #2 control
  65.     B001        R     xxxxxxxx    AY-8910 #2 status
  66.     B002          W   xxxxxxxx    AY-8910 #2 data
  67.     C000          W   xxxxxxxx    Audio status
  68.     E000          W   xxxxxxxx    Unknown
  69.     F000        R     xxxxxxxx    Audio board switches
  70.     ========================================================================
  71.     Interrupts:
  72.         NMI ???
  73.         INT generated by external circuitry 780 times/second
  74.     ========================================================================
  75.  
  76. ***************************************************************************/
  77.  
  78.  
  79. #include "driver.h"
  80. #include "machine/mcr.h"
  81. #include "machine/z80fmly.h"
  82. #include "sndhrdw/mcr.h"
  83. #include "vidhrdw/generic.h"
  84.  
  85.  
  86. extern INT8 mcr12_sprite_xoffs;
  87. extern INT8 mcr12_sprite_xoffs_flip;
  88.  
  89. static UINT8 wacko_mux_select;
  90.  
  91.  
  92. int mcr12_vh_start(void);
  93. void mcr12_vh_stop(void);
  94. WRITE_HANDLER( mcr2_videoram_w );
  95. WRITE_HANDLER( mcr2_paletteram_w );
  96. void mcr2_vh_screenrefresh(struct osd_bitmap *bitmap, int full_refresh);
  97.  
  98. void journey_vh_screenrefresh(struct osd_bitmap *bitmap, int full_refresh);
  99.  
  100.  
  101.  
  102. /*************************************
  103.  *
  104.  *    Kozmik Krooz'r input ports
  105.  *
  106.  *************************************/
  107.  
  108. static READ_HANDLER( kroozr_dial_r )
  109. {
  110.     int dial = readinputport(7);
  111.     int val = readinputport(1);
  112.  
  113.     val |= (dial & 0x80) >> 1;
  114.     val |= (dial & 0x70) >> 4;
  115.  
  116.     return val;
  117. }
  118.  
  119.  
  120. static READ_HANDLER( kroozr_trakball_x_r )
  121. {
  122.     int val = readinputport(6);
  123.  
  124.     if (val & 0x02)        /* left */
  125.         return 0x64 - 0x34;
  126.     if (val & 0x01)        /* right */
  127.         return 0x64 + 0x34;
  128.     return 0x64;
  129. }
  130.  
  131.  
  132. static READ_HANDLER( kroozr_trakball_y_r )
  133. {
  134.     int val = readinputport(6);
  135.  
  136.     if (val & 0x08)        /* up */
  137.         return 0x64 - 0x34;
  138.     if (val & 0x04)        /* down */
  139.         return 0x64 + 0x34;
  140.     return 0x64;
  141. }
  142.  
  143.  
  144.  
  145. /*************************************
  146.  *
  147.  *    Wacko input ports
  148.  *
  149.  *************************************/
  150.  
  151. static WRITE_HANDLER( wacko_mux_select_w )
  152. {
  153.     wacko_mux_select = data & 1;
  154. }
  155.  
  156.  
  157. static READ_HANDLER( wacko_trackball_r )
  158. {
  159.     if (!wacko_mux_select)
  160.         return readinputport(1 + offset);
  161.     else
  162.         return readinputport(6 + offset);
  163. }
  164.  
  165.  
  166.  
  167. /*************************************
  168.  *
  169.  *    NVRAM save/load
  170.  *
  171.  *************************************/
  172.  
  173. static void mcr2_nvram_handler(void *file, int read_or_write)
  174. {
  175.     unsigned char *ram = memory_region(REGION_CPU1);
  176.  
  177.     if (read_or_write)
  178.         osd_fwrite(file, &ram[0xc000], 0x800);
  179.     else if (file)
  180.         osd_fread(file, &ram[0xc000], 0x800);
  181. }
  182.  
  183.  
  184.  
  185. /*************************************
  186.  *
  187.  *    Main CPU memory handlers
  188.  *
  189.  *************************************/
  190.  
  191. static struct MemoryReadAddress readmem[] =
  192. {
  193.     { 0x0000, 0xbfff, MRA_ROM },
  194.     { 0xc000, 0xc7ff, MRA_RAM },
  195.     { 0xf000, 0xf1ff, MRA_RAM },
  196.     { 0xf800, 0xff7f, MRA_RAM },
  197.     { -1 }  /* end of table */
  198. };
  199.  
  200.  
  201. static struct MemoryWriteAddress writemem[] =
  202. {
  203.     { 0x0000, 0xbfff, MWA_ROM },
  204.     { 0xc000, 0xc7ff, MWA_RAM },
  205.     { 0xf000, 0xf1ff, MWA_RAM, &spriteram, &spriteram_size },
  206.     { 0xf800, 0xff7f, mcr2_videoram_w, &videoram, &videoram_size },
  207.     { 0xff80, 0xffff, mcr2_paletteram_w, &paletteram },
  208.     { -1 }  /* end of table */
  209. };
  210.  
  211.  
  212. static struct IOReadPort readport[] =
  213. {
  214.     { 0x00, 0x00, input_port_0_r },
  215.     { 0x01, 0x01, input_port_1_r },
  216.     { 0x02, 0x02, input_port_2_r },
  217.     { 0x03, 0x03, input_port_3_r },
  218.     { 0x04, 0x04, input_port_4_r },
  219.     { 0x07, 0x07, ssio_status_r },
  220.     { 0x10, 0x10, input_port_0_r },
  221.     { 0xf0, 0xf3, z80ctc_0_r },
  222.     { -1 }
  223. };
  224.  
  225.  
  226. static struct IOWritePort writeport[] =
  227. {
  228.     { 0x00, 0x00, mcr_control_port_w },
  229.     { 0x1c, 0x1f, ssio_data_w },
  230.     { 0xe0, 0xe0, watchdog_reset_w },
  231.     { 0xe8, 0xe8, MWA_NOP },
  232.     { 0xf0, 0xf3, z80ctc_0_w },
  233.     { -1 }    /* end of table */
  234. };
  235.  
  236.  
  237.  
  238. /*************************************
  239.  *
  240.  *    Port definitions
  241.  *
  242.  *************************************/
  243.  
  244. INPUT_PORTS_START( shollow )
  245.     PORT_START    /* IN0 */
  246.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
  247.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
  248.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
  249.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
  250.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
  251.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )
  252.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
  253.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  254.  
  255.     PORT_START    /* IN1 */
  256.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY )
  257.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  258.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 )
  259.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
  260.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_COCKTAIL )
  261.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_COCKTAIL )
  262.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
  263.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  264.  
  265.     PORT_START    /* IN2 unused */
  266.     PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  267.  
  268.     PORT_START    /* IN3 -- dipswitches */
  269.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  270.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) )
  271.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  272.     PORT_DIPSETTING(    0x02, DEF_STR( Cocktail ) )
  273.     PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN )
  274.  
  275.     PORT_START    /* IN4 unused */
  276.     PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  277.  
  278.     PORT_START    /* AIN0 */
  279.     PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  280. INPUT_PORTS_END
  281.  
  282.  
  283. INPUT_PORTS_START( tron )
  284.     PORT_START    /* IN0 */
  285.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
  286.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
  287.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
  288.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
  289.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  290.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )
  291.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
  292.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  293.  
  294.     PORT_START    /* IN1 -- controls spinner */
  295.     PORT_ANALOGX( 0xff, 0x00, IPT_DIAL | IPF_REVERSE, 50, 10, 0, 0, KEYCODE_Z, KEYCODE_X, 0, 0 )
  296.  
  297.     PORT_START    /* IN2 */
  298.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
  299.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  300.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
  301.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
  302.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
  303.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  304.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
  305.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
  306.  
  307.     PORT_START    /* IN3 -- dipswitches */
  308.     PORT_DIPNAME( 0x01, 0x00, "Coin Meters" )
  309.     PORT_DIPSETTING(    0x01, "1" )
  310.     PORT_DIPSETTING(    0x00, "2" )
  311.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) )
  312.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  313.     PORT_DIPSETTING(    0x02, DEF_STR( Cocktail ) )
  314.     PORT_DIPNAME( 0x04, 0x00, "Allow Continue" )
  315.     PORT_DIPSETTING(    0x04, DEF_STR( No ) )
  316.     PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
  317.     PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNUSED )
  318.  
  319.     PORT_START    /* IN4 */
  320.     PORT_ANALOG( 0xff, 0x00, IPT_DIAL | IPF_REVERSE | IPF_COCKTAIL, 50, 10, 0, 0 )
  321.  
  322.     PORT_START    /* AIN0 */
  323.     PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNKNOWN )
  324.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  325.     PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
  326. INPUT_PORTS_END
  327.  
  328.  
  329. INPUT_PORTS_START( kroozr )
  330.     PORT_START    /* IN0 */
  331.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
  332.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
  333.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
  334.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
  335.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  336.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )
  337.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
  338.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  339.  
  340.     PORT_START    /* IN1 -- controls firing spinner */
  341.     PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED )
  342.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  343.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  344.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  345.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
  346.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 )
  347.  
  348.     PORT_START    /* IN2 -- controls joystick x-axis */
  349.     PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
  350.  
  351.     PORT_START    /* IN3 -- dipswitches */
  352.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
  353.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) )
  354.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  355.     PORT_DIPSETTING(    0x02, DEF_STR( Cocktail ) )
  356.     PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN )
  357.  
  358.     PORT_START    /* IN4 -- controls joystick y-axis */
  359.     PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
  360.  
  361.     PORT_START    /* AIN0 */
  362.     PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  363.  
  364.     PORT_START    /* dummy extra port for keyboard movement */
  365.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  366.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY )
  367.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY )
  368.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY )
  369.     PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
  370.  
  371.     PORT_START    /* dummy extra port for dial control */
  372.     PORT_ANALOGX( 0xff, 0x00, IPT_DIAL | IPF_REVERSE, 40, 10, 0, 0, KEYCODE_Z, KEYCODE_X, 0, 0 )
  373. INPUT_PORTS_END
  374.  
  375.  
  376. INPUT_PORTS_START( domino )
  377.     PORT_START    /* IN0 */
  378.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
  379.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
  380.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
  381.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
  382.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  383.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )
  384.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
  385.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  386.  
  387.     PORT_START    /* IN1 */
  388.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
  389.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  390.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
  391.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
  392.  
  393.     PORT_START    /* IN2 unused */
  394.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
  395.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  396.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
  397.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
  398.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  399.  
  400.     PORT_START    /* IN3 -- dipswitches */
  401.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
  402.     PORT_DIPNAME( 0x02, 0x02, "Skin Color" )
  403.     PORT_DIPSETTING(    0x02, "Light" )
  404.     PORT_DIPSETTING(    0x00, "Dark" )
  405.     PORT_BIT( 0x3c, IP_ACTIVE_LOW, IPT_UNUSED )
  406.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) )
  407.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  408.     PORT_DIPSETTING(    0x40, DEF_STR( Cocktail ) )
  409.     PORT_DIPNAME( 0x80, 0x00, "Coin Meters" )
  410.     PORT_DIPSETTING(    0x80, "1" )
  411.     PORT_DIPSETTING(    0x00, "2" )
  412.  
  413.     PORT_START    /* IN4 unused */
  414.     PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  415.  
  416.     PORT_START    /* AIN0 */
  417.     PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  418. INPUT_PORTS_END
  419.  
  420.  
  421. INPUT_PORTS_START( wacko )
  422.     PORT_START    /* IN0 */
  423.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
  424.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
  425.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
  426.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
  427.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
  428.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )
  429.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
  430.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  431.  
  432.     PORT_START    /* IN1 -- controls joystick x-axis */
  433.     PORT_ANALOG( 0xff, 0x00, IPT_TRACKBALL_X, 50, 10, 0, 0 )
  434.  
  435.     PORT_START    /* IN2 -- controls joystick y-axis */
  436.     PORT_ANALOG( 0xff, 0x00, IPT_TRACKBALL_Y | IPF_REVERSE, 50, 10, 0, 0 )
  437.  
  438.     PORT_START    /* IN3 -- dipswitches */
  439.     PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNUSED )
  440.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) )
  441.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  442.     PORT_DIPSETTING(    0x40, DEF_STR( Cocktail ) )
  443.     PORT_DIPNAME( 0x80, 0x00, "Coin Meters" )
  444.     PORT_DIPSETTING(    0x80, "1" )
  445.     PORT_DIPSETTING(    0x00, "2" )
  446.  
  447.     PORT_START    /* IN4 -- 4-way firing joystick */
  448.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT | IPF_4WAY )
  449.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT | IPF_4WAY )
  450.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN | IPF_4WAY )
  451.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP | IPF_4WAY )
  452.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT | IPF_4WAY | IPF_COCKTAIL )
  453.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT | IPF_4WAY | IPF_COCKTAIL )
  454.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN | IPF_4WAY | IPF_COCKTAIL )
  455.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP | IPF_4WAY | IPF_COCKTAIL )
  456.  
  457.     PORT_START    /* AIN0 */
  458.     PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  459.  
  460.     PORT_START    /* IN1 -- controls joystick x-axis */
  461.     PORT_ANALOG( 0xff, 0x00, IPT_TRACKBALL_X | IPF_COCKTAIL, 50, 10, 0, 0 )
  462.  
  463.     PORT_START    /* IN2 -- controls joystick y-axis */
  464.     PORT_ANALOG( 0xff, 0x00, IPT_TRACKBALL_Y | IPF_REVERSE | IPF_COCKTAIL, 50, 10, 0, 0 )
  465. INPUT_PORTS_END
  466.  
  467.  
  468. INPUT_PORTS_START( twotiger )
  469.     PORT_START    /* IN0 */
  470.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
  471.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
  472.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
  473.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 )
  474.     PORT_BITX(0x10, IP_ACTIVE_LOW, IPT_START1, "Dogfight Start", KEYCODE_6, IP_JOY_NONE )
  475.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )
  476.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
  477.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  478.  
  479.     PORT_START    /* IN1 -- player 1 spinner */
  480.     PORT_ANALOG( 0xff, 0x00, IPT_DIAL | IPF_REVERSE, 10, 10, 0, 0 )
  481.  
  482.     PORT_START    /* IN2 -- buttons for player 1 & player 2 */
  483.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
  484.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
  485.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  486.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  487.     PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
  488.  
  489.     PORT_START    /* IN3 -- dipswitches */
  490.     PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
  491.  
  492.     PORT_START    /* IN4 -- player 2 spinner */
  493.     PORT_ANALOG( 0xff, 0x00, IPT_DIAL | IPF_REVERSE | IPF_PLAYER2, 10, 10, 0, 0 )
  494.  
  495.     PORT_START    /* AIN0 */
  496.     PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
  497. INPUT_PORTS_END
  498.  
  499.  
  500.  
  501. /*************************************
  502.  *
  503.  *    Graphics definitions
  504.  *
  505.  *************************************/
  506.  
  507. static struct GfxDecodeInfo gfxdecodeinfo[] =
  508. {
  509.     { REGION_GFX1, 0, &mcr_bg_layout,     0, 4 },    /* colors 0-63 */
  510.     { REGION_GFX2, 0, &mcr_sprite_layout, 0, 4 },    /* colors 0-63 */
  511.     { -1 } /* end of array */
  512. };
  513.  
  514.  
  515.  
  516. /*************************************
  517.  *
  518.  *    Machine driver
  519.  *
  520.  *************************************/
  521.  
  522. static struct MachineDriver machine_driver_mcr2 =
  523. {
  524.     /* basic machine hardware */
  525.     {
  526.         {
  527.             CPU_Z80,
  528.             2500000,    /* 2.5 Mhz */
  529.             readmem,writemem,readport,writeport,
  530.             mcr_interrupt,1,
  531.             0,0,mcr_daisy_chain
  532.         },
  533.         SOUND_CPU_SSIO
  534.     },
  535.     30, DEFAULT_REAL_30HZ_VBLANK_DURATION,
  536.     1,
  537.     mcr_init_machine,
  538.  
  539.     /* video hardware */
  540.     32*16, 30*16, { 0*16, 32*16-1, 0*16, 30*16-1 },
  541.     gfxdecodeinfo,
  542.     64,64,
  543.     0,
  544.  
  545.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
  546.     0,
  547.     mcr12_vh_start,
  548.     mcr12_vh_stop,
  549.     mcr2_vh_screenrefresh,
  550.  
  551.     /* sound hardware */
  552.     SOUND_SUPPORTS_STEREO,0,0,0,
  553.     {
  554.         SOUND_SSIO
  555.     },
  556.     mcr2_nvram_handler
  557. };
  558.  
  559.  
  560. static struct MachineDriver machine_driver_journey =
  561. {
  562.     /* basic machine hardware */
  563.     {
  564.         {
  565.             CPU_Z80,
  566.             7500000,    /* Looks like it runs at 7.5 Mhz rather than 5 or 2.5 */
  567.             readmem,writemem,readport,writeport,
  568.             mcr_interrupt,1,
  569.             0,0,mcr_daisy_chain
  570.         },
  571.         SOUND_CPU_SSIO
  572.     },
  573.     30, DEFAULT_REAL_30HZ_VBLANK_DURATION,
  574.     1,
  575.     mcr_init_machine,
  576.  
  577.     /* video hardware */
  578.     32*16, 30*16, { 0*16, 32*16-1, 0*16, 30*16-1 },
  579.     gfxdecodeinfo,
  580.     64,64,
  581.     0,
  582.  
  583.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_BEFORE_VBLANK,
  584.     0,
  585.     generic_vh_start,
  586.     generic_vh_stop,
  587.     journey_vh_screenrefresh,
  588.  
  589.     /* sound hardware */
  590.     SOUND_SUPPORTS_STEREO,0,0,0,
  591.     {
  592.         SOUND_SSIO
  593.     },
  594.     mcr2_nvram_handler
  595. };
  596.  
  597.  
  598.  
  599. /*************************************
  600.  *
  601.  *    Driver initialization
  602.  *
  603.  *************************************/
  604.  
  605. static void init_mcr2(void)
  606. {
  607.     MCR_CONFIGURE_SOUND(MCR_SSIO);
  608.     install_port_write_handler(0, 0x00, 0x00, mcr_control_port_w);
  609.  
  610.     mcr12_sprite_xoffs = 0;
  611.     mcr12_sprite_xoffs_flip = 0;
  612. }
  613.  
  614.  
  615. static void init_domino(void)
  616. {
  617.     MCR_CONFIGURE_SOUND(MCR_SSIO);
  618.     install_port_write_handler(0, 0x01, 0x01, mcr_control_port_w);
  619.  
  620.     mcr12_sprite_xoffs = 0;
  621.     mcr12_sprite_xoffs_flip = 0;
  622. }
  623.  
  624.  
  625. static void init_wacko(void)
  626. {
  627.     MCR_CONFIGURE_SOUND(MCR_SSIO);
  628.     install_port_write_handler(0, 0x04, 0x04, wacko_mux_select_w);
  629.     install_port_read_handler(0, 0x01, 0x02, wacko_trackball_r);
  630.  
  631.     mcr12_sprite_xoffs = 0;
  632.     mcr12_sprite_xoffs_flip = 0;
  633. }
  634.  
  635.  
  636. static void init_kroozr(void)
  637. {
  638.     MCR_CONFIGURE_SOUND(MCR_SSIO);
  639.     install_port_read_handler(0, 0x01, 0x01, kroozr_dial_r);
  640.     install_port_read_handler(0, 0x02, 0x02, kroozr_trakball_x_r);
  641.     install_port_read_handler(0, 0x04, 0x04, kroozr_trakball_y_r);
  642.  
  643.     mcr12_sprite_xoffs = 0;
  644.     mcr12_sprite_xoffs_flip = 0;
  645. }
  646.  
  647.  
  648.  
  649. /*************************************
  650.  *
  651.  *    ROM definitions
  652.  *
  653.  *************************************/
  654.  
  655. ROM_START( shollow )
  656.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  657.     ROM_LOAD( "sh-pro.00",    0x0000, 0x2000, 0x95e2b800 )
  658.     ROM_LOAD( "sh-pro.01",    0x2000, 0x2000, 0xb99f6ff8 )
  659.     ROM_LOAD( "sh-pro.02",    0x4000, 0x2000, 0x1202c7b2 )
  660.     ROM_LOAD( "sh-pro.03",    0x6000, 0x2000, 0x0a64afb9 )
  661.     ROM_LOAD( "sh-pro.04",    0x8000, 0x2000, 0x22fa9175 )
  662.     ROM_LOAD( "sh-pro.05",    0xa000, 0x2000, 0x1716e2bb )
  663.  
  664.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  665.     ROM_LOAD( "sh-snd.01",    0x0000, 0x1000, 0x55a297cc )
  666.     ROM_LOAD( "sh-snd.02",    0x1000, 0x1000, 0x46fc31f6 )
  667.     ROM_LOAD( "sh-snd.03",    0x2000, 0x1000, 0xb1f4a6a8 )
  668.  
  669.     ROM_REGION( 0x04000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  670.     ROM_LOAD( "sh-bg.00",     0x00000, 0x2000, 0x3e2b333c )
  671.     ROM_LOAD( "sh-bg.01",     0x02000, 0x2000, 0xd1d70cc4 )
  672.  
  673.     ROM_REGION( 0x08000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  674.     ROM_LOAD( "sh-fg.00",     0x00000, 0x2000, 0x33f4554e )
  675.     ROM_LOAD( "sh-fg.01",     0x02000, 0x2000, 0xba1a38b4 )
  676.     ROM_LOAD( "sh-fg.02",     0x04000, 0x2000, 0x6b57f6da )
  677.     ROM_LOAD( "sh-fg.03",     0x06000, 0x2000, 0x37ea9d07 )
  678. ROM_END
  679.  
  680.  
  681. ROM_START( shollow2 )
  682.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  683.     ROM_LOAD( "sh-pro.00",    0x0000, 0x2000, 0x95e2b800 )
  684.     ROM_LOAD( "sh-pro.01",    0x2000, 0x2000, 0xb99f6ff8 )
  685.     ROM_LOAD( "sh-pro.02",    0x4000, 0x2000, 0x1202c7b2 )
  686.     ROM_LOAD( "sh-pro.03",    0x6000, 0x2000, 0x0a64afb9 )
  687.     ROM_LOAD( "sh-pro.04",    0x8000, 0x2000, 0x22fa9175 )
  688.     ROM_LOAD( "sh-pro.05",    0xa000, 0x2000, 0x1716e2bb )
  689.  
  690.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  691.     ROM_LOAD( "snd-0.a7",     0x0000, 0x1000, 0x9d815bb3 )
  692.     ROM_LOAD( "snd-1.a8",     0x1000, 0x1000, 0x9f253412 )
  693.     ROM_LOAD( "snd-2.a9",     0x2000, 0x1000, 0x7783d6c6 )
  694.  
  695.     ROM_REGION( 0x04000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  696.     ROM_LOAD( "sh-bg.00",     0x00000, 0x2000, 0x3e2b333c )
  697.     ROM_LOAD( "sh-bg.01",     0x02000, 0x2000, 0xd1d70cc4 )
  698.  
  699.     ROM_REGION( 0x08000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  700.     ROM_LOAD( "sh-fg.00",     0x00000, 0x2000, 0x33f4554e )
  701.     ROM_LOAD( "sh-fg.01",     0x02000, 0x2000, 0xba1a38b4 )
  702.     ROM_LOAD( "sh-fg.02",     0x04000, 0x2000, 0x6b57f6da )
  703.     ROM_LOAD( "sh-fg.03",     0x06000, 0x2000, 0x37ea9d07 )
  704. ROM_END
  705.  
  706.  
  707. ROM_START( tron )
  708.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  709.     ROM_LOAD( "scpu_pga.bin", 0x0000, 0x2000, 0x5151770b )
  710.     ROM_LOAD( "scpu_pgb.bin", 0x2000, 0x2000, 0x8ddf8717 )
  711.     ROM_LOAD( "scpu_pgc.bin", 0x4000, 0x2000, 0x4241e3a0 )
  712.     ROM_LOAD( "scpu_pgd.bin", 0x6000, 0x2000, 0x035d2fe7 )
  713.     ROM_LOAD( "scpu_pge.bin", 0x8000, 0x2000, 0x24c185d8 )
  714.     ROM_LOAD( "scpu_pgf.bin", 0xA000, 0x2000, 0x38c4bbaf )
  715.  
  716.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  717.     ROM_LOAD( "ssi_0a.bin",   0x0000, 0x1000, 0x765e6eba )
  718.     ROM_LOAD( "ssi_0b.bin",   0x1000, 0x1000, 0x1b90ccdd )
  719.     ROM_LOAD( "ssi_0c.bin",   0x2000, 0x1000, 0x3a4bc629 )
  720.  
  721.     ROM_REGION( 0x04000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  722.     ROM_LOAD( "scpu_bgg.bin", 0x00000, 0x2000, 0x1a9ed2f5 )
  723.     ROM_LOAD( "scpu_bgh.bin", 0x02000, 0x2000, 0x3220f974 )
  724.  
  725.     ROM_REGION( 0x08000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  726.     ROM_LOAD( "vg_3.bin",     0x00000, 0x2000, 0xbc036d1d )
  727.     ROM_LOAD( "vg_2.bin",     0x02000, 0x2000, 0x58ee14d3 )
  728.     ROM_LOAD( "vg_1.bin",     0x04000, 0x2000, 0x3329f9d4 )
  729.     ROM_LOAD( "vg_0.bin",     0x06000, 0x2000, 0x9743f873 )
  730. ROM_END
  731.  
  732.  
  733. ROM_START( tron2 )
  734.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  735.     ROM_LOAD( "pro0.d2",      0x0000, 0x2000, 0x0de0471a )
  736.     ROM_LOAD( "scpu_pgb.bin", 0x2000, 0x2000, 0x8ddf8717 )
  737.     ROM_LOAD( "scpu_pgc.bin", 0x4000, 0x2000, 0x4241e3a0 )
  738.     ROM_LOAD( "scpu_pgd.bin", 0x6000, 0x2000, 0x035d2fe7 )
  739.     ROM_LOAD( "scpu_pge.bin", 0x8000, 0x2000, 0x24c185d8 )
  740.     ROM_LOAD( "scpu_pgf.bin", 0xA000, 0x2000, 0x38c4bbaf )
  741.  
  742.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  743.     ROM_LOAD( "ssi_0a.bin",   0x0000, 0x1000, 0x765e6eba )
  744.     ROM_LOAD( "ssi_0b.bin",   0x1000, 0x1000, 0x1b90ccdd )
  745.     ROM_LOAD( "ssi_0c.bin",   0x2000, 0x1000, 0x3a4bc629 )
  746.  
  747.     ROM_REGION( 0x04000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  748.     ROM_LOAD( "scpu_bgg.bin", 0x00000, 0x2000, 0x1a9ed2f5 )
  749.     ROM_LOAD( "scpu_bgh.bin", 0x02000, 0x2000, 0x3220f974 )
  750.  
  751.     ROM_REGION( 0x08000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  752.     ROM_LOAD( "vg_3.bin",     0x00000, 0x2000, 0xbc036d1d )
  753.     ROM_LOAD( "vg_2.bin",     0x02000, 0x2000, 0x58ee14d3 )
  754.     ROM_LOAD( "vg_1.bin",     0x04000, 0x2000, 0x3329f9d4 )
  755.     ROM_LOAD( "vg_0.bin",     0x06000, 0x2000, 0x9743f873 )
  756. ROM_END
  757.  
  758.  
  759. ROM_START( kroozr )
  760.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  761.     ROM_LOAD( "kozmkcpu.2d",  0x0000, 0x2000, 0x61e02045 )
  762.     ROM_LOAD( "kozmkcpu.3d",  0x2000, 0x2000, 0xcaabed57 )
  763.     ROM_LOAD( "kozmkcpu.4d",  0x4000, 0x2000, 0x2bc83fc7 )
  764.     ROM_LOAD( "kozmkcpu.5d",  0x6000, 0x2000, 0xa0ec38c1 )
  765.     ROM_LOAD( "kozmkcpu.6d",  0x8000, 0x2000, 0x7044f2b6 )
  766.  
  767.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  768.     ROM_LOAD( "kozmksnd.7a",  0x0000, 0x1000, 0x6736e433 )
  769.     ROM_LOAD( "kozmksnd.8a",  0x1000, 0x1000, 0xea9cd919 )
  770.     ROM_LOAD( "kozmksnd.9a",  0x2000, 0x1000, 0x9dfa7994 )
  771.  
  772.     ROM_REGION( 0x04000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  773.     ROM_LOAD( "kozmkcpu.3g",  0x00000, 0x2000, 0xeda6ed2d )
  774.     ROM_LOAD( "kozmkcpu.4g",  0x02000, 0x2000, 0xddde894b )
  775.  
  776.     ROM_REGION( 0x08000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  777.     ROM_LOAD( "kozmkvid.1e",  0x00000, 0x2000, 0xca60e2cc )
  778.     ROM_LOAD( "kozmkvid.1d",  0x02000, 0x2000, 0x4e23b35b )
  779.     ROM_LOAD( "kozmkvid.1b",  0x04000, 0x2000, 0xc6041ba7 )
  780.     ROM_LOAD( "kozmkvid.1a",  0x06000, 0x2000, 0xb57fb0ff )
  781. ROM_END
  782.  
  783.  
  784. ROM_START( domino )
  785.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  786.     ROM_LOAD( "dmanpg0.bin",  0x0000, 0x2000, 0x3bf3bb1c )
  787.     ROM_LOAD( "dmanpg1.bin",  0x2000, 0x2000, 0x85cf1d69 )
  788.     ROM_LOAD( "dmanpg2.bin",  0x4000, 0x2000, 0x7dd2177a )
  789.     ROM_LOAD( "dmanpg3.bin",  0x6000, 0x2000, 0xf2e0aa44 )
  790.  
  791.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  792.     ROM_LOAD( "dm-a7.snd",    0x0000, 0x1000, 0xfa982dcc )
  793.     ROM_LOAD( "dm-a8.snd",    0x1000, 0x1000, 0x72839019 )
  794.     ROM_LOAD( "dm-a9.snd",    0x2000, 0x1000, 0xad760da7 )
  795.     ROM_LOAD( "dm-a10.snd",   0x3000, 0x1000, 0x958c7287 )
  796.  
  797.     ROM_REGION( 0x04000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  798.     ROM_LOAD( "dmanbg0.bin",  0x00000, 0x2000, 0x9163007f )
  799.     ROM_LOAD( "dmanbg1.bin",  0x02000, 0x2000, 0x28615c56 )
  800.  
  801.     ROM_REGION( 0x08000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  802.     ROM_LOAD( "dmanfg0.bin",  0x00000, 0x2000, 0x0b1f9f9e )
  803.     ROM_LOAD( "dmanfg1.bin",  0x02000, 0x2000, 0x16aa4b9b )
  804.     ROM_LOAD( "dmanfg2.bin",  0x04000, 0x2000, 0x4a8e76b8 )
  805.     ROM_LOAD( "dmanfg3.bin",  0x06000, 0x2000, 0x1f39257e )
  806. ROM_END
  807.  
  808.  
  809. ROM_START( wacko )
  810.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  811.     ROM_LOAD( "wackocpu.2d",  0x0000, 0x2000, 0xc98e29b6 )
  812.     ROM_LOAD( "wackocpu.3d",  0x2000, 0x2000, 0x90b89774 )
  813.     ROM_LOAD( "wackocpu.4d",  0x4000, 0x2000, 0x515edff7 )
  814.     ROM_LOAD( "wackocpu.5d",  0x6000, 0x2000, 0x9b01bf32 )
  815.  
  816.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  817.     ROM_LOAD( "wackosnd.7a",  0x0000, 0x1000, 0x1a58763f )
  818.     ROM_LOAD( "wackosnd.8a",  0x1000, 0x1000, 0xa4e3c771 )
  819.     ROM_LOAD( "wackosnd.9a",  0x2000, 0x1000, 0x155ba3dd )
  820.  
  821.     ROM_REGION( 0x04000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  822.     ROM_LOAD( "wackocpu.3g",  0x00000, 0x2000, 0x33160eb1 )
  823.     ROM_LOAD( "wackocpu.4g",  0x02000, 0x2000, 0xdaf37d7c )
  824.  
  825.     ROM_REGION( 0x08000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  826.     ROM_LOAD( "wackovid.1e",  0x00000, 0x2000, 0xdca59be7 )
  827.     ROM_LOAD( "wackovid.1d",  0x02000, 0x2000, 0xa02f1672 )
  828.     ROM_LOAD( "wackovid.1b",  0x04000, 0x2000, 0x7d899790 )
  829.     ROM_LOAD( "wackovid.1a",  0x06000, 0x2000, 0x080be3ad )
  830. ROM_END
  831.  
  832.  
  833. ROM_START( twotiger )
  834.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  835.     ROM_LOAD( "2tgrpg0.bin",  0x0000, 0x2000, 0xe77a924b )
  836.     ROM_LOAD( "2tgrpg1.bin",  0x2000, 0x2000, 0x2699ebdc )
  837.     ROM_LOAD( "2tgrpg2.bin",  0x4000, 0x2000, 0xb5ca3f17 )
  838.     ROM_LOAD( "2tgrpg3.bin",  0x6000, 0x2000, 0x8aa82049 )
  839.  
  840.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  841.     ROM_LOAD( "2tgra7.bin",   0x0000, 0x1000, 0x4620d970 )
  842.     ROM_LOAD( "2tgra8.bin",   0x1000, 0x1000, 0xe95d8cfe )
  843.     ROM_LOAD( "2tgra9.bin",   0x2000, 0x1000, 0x81e6ce0e )
  844.  
  845.     ROM_REGION( 0x04000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  846.     ROM_LOAD( "2tgrbg0.bin",  0x00000, 0x2000, 0x52f69068 )
  847.     ROM_LOAD( "2tgrbg1.bin",  0x02000, 0x2000, 0x758d4f7d )
  848.  
  849.     ROM_REGION( 0x08000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  850.     ROM_LOAD( "2tgrfg0.bin",  0x00000, 0x2000, 0x4abf3ca0 )
  851.     ROM_LOAD( "2tgrfg1.bin",  0x02000, 0x2000, 0xfbcaffa5 )
  852.     ROM_LOAD( "2tgrfg2.bin",  0x04000, 0x2000, 0x08e3e1a6 )
  853.     ROM_LOAD( "2tgrfg3.bin",  0x06000, 0x2000, 0x9b22697b )
  854. ROM_END
  855.  
  856.  
  857. ROM_START( journey )
  858.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  859.     ROM_LOAD( "d2",           0x0000, 0x2000, 0xf2618913 )
  860.     ROM_LOAD( "d3",           0x2000, 0x2000, 0x2f290d2e )
  861.     ROM_LOAD( "d4",           0x4000, 0x2000, 0xcc6c0150 )
  862.     ROM_LOAD( "d5",           0x6000, 0x2000, 0xc3023931 )
  863.     ROM_LOAD( "d6",           0x8000, 0x2000, 0x5d445c99 )
  864.  
  865.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for the audio CPU */
  866.     ROM_LOAD( "a",            0x0000, 0x1000, 0x2524a2aa )
  867.     ROM_LOAD( "b",            0x1000, 0x1000, 0xb8e35814 )
  868.     ROM_LOAD( "c",            0x2000, 0x1000, 0x09c488cf )
  869.     ROM_LOAD( "d",            0x3000, 0x1000, 0x3d627bee )
  870.  
  871.     ROM_REGION( 0x04000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  872.     ROM_LOAD( "g3",           0x00000, 0x2000, 0xc14558de )
  873.     ROM_LOAD( "g4",           0x02000, 0x2000, 0x9104c1d0 )
  874.  
  875.     ROM_REGION( 0x10000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  876.     ROM_LOAD( "a7",           0x00000, 0x2000, 0x4ca2bb2d )
  877.     ROM_LOAD( "a8",           0x02000, 0x2000, 0x4fb7925d )
  878.     ROM_LOAD( "a5",           0x04000, 0x2000, 0x560c474f )
  879.     ROM_LOAD( "a6",           0x06000, 0x2000, 0xb1f31583 )
  880.     ROM_LOAD( "a3",           0x08000, 0x2000, 0xf295afda )
  881.     ROM_LOAD( "a4",           0x0a000, 0x2000, 0x765876a7 )
  882.     ROM_LOAD( "a1",           0x0c000, 0x2000, 0x4af986f8 )
  883.     ROM_LOAD( "a2",           0x0e000, 0x2000, 0xb30cd2a7 )
  884. ROM_END
  885.  
  886.  
  887.  
  888. /*************************************
  889.  *
  890.  *    Game drivers
  891.  *
  892.  *************************************/
  893.  
  894. GAME( 1981, shollow,  0,       mcr2,    shollow,  mcr2,     ROT90, "Bally Midway", "Satan's Hollow (set 1)" )
  895. GAME( 1981, shollow2, shollow, mcr2,    shollow,  mcr2,     ROT90, "Bally Midway", "Satan's Hollow (set 2)" )
  896. GAME( 1982, tron,     0,       mcr2,    tron,     mcr2,     ROT90, "Bally Midway", "Tron (set 1)" )
  897. GAME( 1982, tron2,    tron,    mcr2,    tron,     mcr2,     ROT90, "Bally Midway", "Tron (set 2)" )
  898. GAME( 1982, kroozr,   0,       mcr2,    kroozr,   kroozr,   ROT0,  "Bally Midway", "Kozmik Kroozr" )
  899. GAME( 1982, domino,   0,       mcr2,    domino,   domino,   ROT0,  "Bally Midway", "Domino Man" )
  900. GAME( 1982, wacko,    0,       mcr2,    wacko,    wacko,    ROT0,  "Bally Midway", "Wacko" )
  901. GAME( 1984, twotiger, 0,       mcr2,    twotiger, mcr2,     ROT0,  "Bally Midway", "Two Tigers" )
  902. GAMEX(1983, journey,  0,       journey, domino,   mcr2,     ROT90, "Bally Midway", "Journey", GAME_IMPERFECT_SOUND )
  903.